package org.splink.resource {
	import org.splink.library.queue.IQable;

	import flash.system.LoaderContext;

	/**
	 * An <code>IResourceProcessor</code> defines the public API which can be used to load and process
	 * the splinkresource configuration. The API builds on top of the <code>IQable</code> interface and 
	 * adds the option to define the <code>loaderContext</code> which is used to load the resources. 
	 * 
	 * After invoking <code>start</code> <code>ResourcebundleProcessor</code> loads the resources 
	 * for the given locale and sets up the <code>IResourceProvider</code> default implementation <code>ResourceProvider</code>.
	 * After the <code>IResourceProcessor</code> distributes a <code>QEvent.COMPLETE</code> you can access
	 * these resources via <code>ResourceProvider.instance().*</code> 
	 * 
	 * Depending on the available configuration format you can choose between different <code>IResourceProcessor</code>
	 * implementations. 
	 * 
	 * @see org.splink.queue.IQable
	 * 
	 * @author Max Kugland
	 */
	public interface IResourceProcessor extends IQable {
		/**
		 * Sets the <code>LoaderContext</code> which is used to load the resources. 
		 * 
		 * @param loaderContext
		 * @return the <code>IResourceProcessor</code>
		 * 
		 * @see flash.system.LoaderContext
		 */
		function loaderContext(loaderContext : LoaderContext) : IResourceProcessor;
	}
}
